Skip to content

Docker 安装

Ubuntu 安装 Docker

主机版本

本次安装使用的 Ubuntu 版本为:Ubuntu 20.04 LTS

sh
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04 LTS
Release:        20.04
Codename:       focal

卸载旧版本 Docker

Docker 的旧版本被称为 docker、docker.io 或者 docker-engine。如果安装了这些,卸载它们:

sh
$ sudo apt remove docker docker-engine docker.io containerd runc

提示

这会保留 /var/lib/docker/ 文件中的镜像、容器、卷、网络等内容。如果您不需要保存现有数据,并且希望开始一次干净的安装,请参阅本页底部的 卸载 Docker Engine 一节。

从 Docker 存储库安装

大多数用户设置 Docker 的存储库并从中安装,以方便安装和升级任务。这是推荐的方法。

在新主机上首次安装 Docker Engine 之前,需要先设置 Docker 存储库。之后,您可以从存储库安装和更新 Docker。

设置 Docker 存储库

  1. 更新 apt 包索引和安装包,以允许 apt 使用 HTTPS 存储库:

    sh
    $ sudo apt update
    
    $ sudo apt-get install \
        ca-certificates \
        curl \
        gnupg \
        lsb-release
  2. 添加 Docker 的官方 GPG 密钥:

    sh
    $ sudo mkdir -m 0755 -p /etc/apt/keyrings
    
    $
  3. 使用以下命令设置 stable 版本的存储库:

    sh
    $ echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装 Docker Engine

  1. 更新 apt 包索引,安装最新版本的 Docker Engine 和 container:

    sh
    $ sudo apt update
    
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    安装特定版本的 Docker Engine 和 container

    要安装特定版本的 Docker Engine,请在 repo 中列出可用的版本,然后选择并安装:

    1. 列出您的 repo 中可用的版本:

      sh
      $ apt-cache madison docker-ce | awk '{ print $3 }'
      5:23.0.1-1~ubuntu.20.04~focal
      5:23.0.0-1~ubuntu.20.04~focal
      5:20.10.23~3-0~ubuntu-focal
      5:20.10.22~3-0~ubuntu-focal
      5:20.10.21~3-0~ubuntu-focal
      5:20.10.20~3-0~ubuntu-focal
      5:20.10.19~3-0~ubuntu-focal
      5:20.10.18~3-0~ubuntu-focal
      5:20.10.17~3-0~ubuntu-focal
      5:20.10.16~3-0~ubuntu-focal
      5:20.10.15~3-0~ubuntu-focal
      5:20.10.14~3-0~ubuntu-focal
      5:20.10.13~3-0~ubuntu-focal
      5:20.10.12~3-0~ubuntu-focal
      5:20.10.11~3-0~ubuntu-focal
      5:20.10.10~3-0~ubuntu-focal
      5:20.10.9~3-0~ubuntu-focal
      5:20.10.8~3-0~ubuntu-focal
      5:20.10.7~3-0~ubuntu-focal
      5:20.10.6~3-0~ubuntu-focal
      5:20.10.5~3-0~ubuntu-focal
      5:20.10.4~3-0~ubuntu-focal
      5:20.10.3~3-0~ubuntu-focal
      5:20.10.2~3-0~ubuntu-focal
      5:20.10.1~3-0~ubuntu-focal
      5:20.10.0~3-0~ubuntu-focal
      5:19.03.15~3-0~ubuntu-focal
      5:19.03.14~3-0~ubuntu-focal
      5:19.03.13~3-0~ubuntu-focal
      5:19.03.12~3-0~ubuntu-focal
      5:19.03.11~3-0~ubuntu-focal
      5:19.03.10~3-0~ubuntu-focal
      5:19.03.9~3-0~ubuntu-focal
    2. 选择所需的版本并安装:

      sh
      $ VERSION_STRING=5:20.10.13~3-0~ubuntu-jammy
      $ sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
  2. 通过运行hello-world镜像来验证Docker引擎是否正确安装:

    sh
    $ sudo docker run hello-world
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    b8dfde127a29: Pull complete
    Digest: sha256:7d91b69e04a9029b99f3585aaaccae2baa80bcf318f4a5d2165a9898cd2dc0a1
    Status: Downloaded newer image for hello-world:latest
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    ...

    这个命令下载一个测试镜像并在容器中运行它。当容器运行时,它打印一条消息并退出。

提示

已安装并运行 Docker 引擎。docker 组已创建,但未添加任何用户。您需要使用 sudo 来运行 Docker 命令。

卸载 Docker Engine

  1. 卸载 Docker Engine、CLI 和 Containerd 包:

    sh
    $ sudo apt purge docker-ce docker-ce-cli containerd.io
  2. 主机上的镜像、容器、卷或自定义配置文件不会自动删除。要删除所有镜像、容器和卷:

    sh
    $ sudo rm -rf /var/lib/docker
    $ sudo rm -rf /var/lib/containerd

Docker 在 Linux 下安装后设置

以非 root 用户管理 Docker

Docker 守护进程绑定到 Unix 套接字而不是 TCP 端口。默认情况下,Unix 套接字属于 root 用户,其他用户只能使用 sudo 访问它。Docker 守护进程始终以 root 用户运行。

如果您不想在 docker 命令之前加上 sudo,可以创建一个名为 docker 的 Unix 组并向其中添加用户。当 Docker 守护进程启动时,它会创建一个由 Docker 组的成员访问的 Unix 套接字。

创建 docker 组并添加当前用户:

  1. 创建 docker 组。

    sh
    $ sudo groupadd docker
  2. 添加当前用户到 docker 组。

    sh
    $ sudo usermod -aG docker $USER
  3. 激活对 docker 组的修改。

    sh
    $ newgrp docker
  4. 验证当前用户可以在不使用 sudo 的情况下运行 docker 命令。

    sh
    $ docker run hello-world

将 Docker 设置为开机自启动

要设置开机自动启动 Docker 和 Containerd,请使用下面的命令:

sh
$ sudo systemctl enable docker.service
$ sudo systemctl enable containerd.service

要禁用此行为,请使用 disable

sh
$ sudo systemctl disable docker.service
$ sudo systemctl disable containerd.service

Released under the MIT License.